package br.com.sg5.model.dao.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import br.com.sg5.model.bean.Usuario;
import br.com.sg5.model.dao.InterfaceDAO;
import br.com.sg5.model.dao.UsuarioDao;
import br.com.sg5.model.ddl.GeraTabelas;

@Repository("UsuarioDao")
public class UsuarioDaoImpl implements UsuarioDao {

	private SessionFactory sessionFactory;

	@Autowired
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Usuario> getUsuario() {
		Query query = sessionFactory.getCurrentSession().createQuery(
				"from Usuario");

		return query.list();
	}

	@Override
	public boolean getLogin(String usuario, String senha) {
		Query query = sessionFactory.getCurrentSession().createQuery(
				"from Usuario where login = '" + usuario + "' and senha like'"
						+ senha + "' and ativo like'" + "S" + "'");

		if (query.list().size() < 1) {
			return false;
		}
		return true;
	}

	@Override
	public boolean incluir(Usuario usuario) {

		Session session = sessionFactory.getCurrentSession();

		try {
			InterfaceDAO<Usuario> usuarioDAO = new HibernateDAO<Usuario>(
					Usuario.class, session);

			usuarioDAO.salvar(usuario);

			return true;
		} catch (Exception e) {
			System.out.println("Erro : " + e.getLocalizedMessage());
			return false;

		}

	}

	@Override
	public boolean excluir(Usuario usuario) {
		Session session = sessionFactory.getCurrentSession();
		try {
			InterfaceDAO<Usuario> usuarioDAO = new HibernateDAO<Usuario>(
					Usuario.class, session);
			usuarioDAO.excluir(usuario);
			return true;
		} catch (Exception e) {
			System.out.println("Erro : " + e.getLocalizedMessage());
			return false;
		}
	}

	@Override
	public boolean atualizar(Usuario usuario) {
		Session session = sessionFactory.getCurrentSession();
		try {
			InterfaceDAO<Usuario> usuarioDAO = new HibernateDAO<Usuario>(
					Usuario.class, session);
			usuarioDAO.atualizar(usuario);
			return true;
		} catch (Exception e) {
			System.out.println("Erro : " + e.getLocalizedMessage());
			return false;
		}
	}

	@Override
	public boolean buscar(Integer codigo) {
		Session session = sessionFactory.getCurrentSession();
		InterfaceDAO<Usuario> usuarioDAO = new HibernateDAO<Usuario>(
				Usuario.class, session);

		try {
			usuarioDAO.getBean(codigo);
			return true;
		} catch (Exception e) {
			System.out.println("Erro : " + e.getLocalizedMessage());
			return false;
		}
	}
}
